Fault Tolerance And Its Role In Building Reliable Systems